from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.shortcuts import redirect
from django.core.exceptions import ObjectDoesNotExist
from django.contrib.auth.decorators import login_required
from Grupos.forms import GruposForm, GruposFormReadOnly
from Grupos.models import Grupo

@login_required
def inicio(request):
	gruposOwner = Grupo.objects.filter(creador = request.user)
	gruposPertenece = Grupo.objects.filter(miembros__id__exact=request.user.id)
	return render_to_response(
		'grupos/mis_grupos.html',
		{'gruposOwner': gruposOwner, 'gruposPertenece': gruposPertenece, 'usuario': request.user},
		context_instance=RequestContext(request)
	)

@login_required
def salir(request, idgrupo):
	try:
		grupo = Grupo.objects.get(id=idgrupo)
		if grupo.creador.id != request.user.id:
			grupo.miembros.remove(request.user)
	except ObjectDoesNotExist:
		pass

	return redirect('/grupos/')

@login_required
def ver(request, idgrupo):
	try:
		grupo = Grupo.objects.get(id=idgrupo)
	except ObjectDoesNotExist:
		return redirect('/grupos/')

	esMiembro = False
	grupos = Grupo.objects.filter(miembros__id__exact=request.user.id)
	for g in grupos:
		if g.id == grupo.id:
			esMiembro = True
			break

	if request.method == 'GET':
		return render_to_response(
			'grupos/ver.html',
			{'form': GruposFormReadOnly(user=request.user, instance=grupo), 'grupo': grupo, 'usuario': request.user,
			 'esMiembro': esMiembro},
			context_instance=RequestContext(request)
		)

	return redirect('/grupos/')

@login_required
def crear(request):
	if request.method == 'GET':
		return render_to_response(
			'grupos/crear.html',
			{'form': GruposForm(user=request.user), 'usuario': request.user},
			context_instance=RequestContext(request)
		)
	elif request.method == 'POST':
		form = GruposForm(user=request.user, data=request.POST)
		if form.is_valid():
			grupo = form.save()
			grupo.miembros.add(request.user)

	return redirect('/grupos/')

@login_required
def editar(request, idgrupo):
	try:
		grupo = Grupo.objects.get(id=idgrupo)
	except ObjectDoesNotExist:
		return redirect('/grupos/')

	if grupo.creador.id == request.user.id:
		if request.method == 'GET':
			if grupo.creador.id == request.user.id:
				return render_to_response(
					'grupos/editar.html',
					{'form': GruposForm(user=request.user, instance=grupo), 'grupo': grupo, 'usuario': request.user},
					context_instance=RequestContext(request)
				)
		elif request.method == 'POST':
			if grupo.creador.id == request.user.id:
				form = GruposForm(user=request.user, data=request.POST, instance=grupo)
				if form.is_valid():
					form.save()

	return redirect('/grupos/')

@login_required
def borrar(request, idgrupo):
	try:
		grupo = Grupo.objects.get(id=idgrupo)
	except ObjectDoesNotExist:
		return redirect('/grupos/')

	if grupo.creador.id == request.user.id:
		if request.method == 'POST':
			Grupo.delete(grupo)
			return redirect('/grupos/')

	return redirect('/grupos/')
